package com.exercises.mapper.student;

import com.exercises.object.Student;
import com.exercises.object.StudentVO;
import com.exercises.object.Subject;
import org.apache.ibatis.annotations.Mapper;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * --- 代码敲对！ ---
 *
 * @author CCCccc
 * @create 2025/8/15
 * 备注：学生持久层，用于编写实现与数据库交互的方法
 */
@Mapper
public interface StudentMapper {

    // 根据id查询学生
    Student getStudentById(int id);

    // 查询所有学生
    ArrayList<Student> getAllStudents();

    // 根据年龄或姓名查询学生
    ArrayList<Student> getStudentByAgeOrName(HashMap<String, String> map);

    // 添加学生
    boolean addStudent(Student student);

    // 修改学生
    boolean updateStudent(Student student);

    // 批量删除学生
    boolean deleteStudentBatch(int[] ids);

    // 查询学生和班级
    ArrayList<StudentVO> getStudentWithClassroom();

    // 查询学生和课程以及任课老师
    ArrayList<StudentVO> getStudentWithSubject();

    // 根据学生id查询课程id
    ArrayList<Integer> getSubjectIdsByStudentId(int id);

    Subject getSubjectById(int subId);
}
